In [1]:
#include <stdio.h>
//Constantes en C
#define CADENA "Un tete a tete con tete"
#define SUBCADENA "te"
/*
* Funcion que busca la ultima aparicion de una sub-cadena dada en otra cadena.
* Devuelve la posicion donde comienza la sub-cadena, o -1 en caso de no encontrarla.
*/
int buscar_ultimo(char* cadena,char* subcadena); // Definicion del prototipo
int buscar_ultimo(char* cadena,char* subcadena){
if (!cadena[0]) //Caso cadena[0]=='\n'
return 0;
int posicion = buscar_ultimo(cadena+1,subcadena);
if (posicion > -1) //Caso ya se encontro, entonces no es el ultimo
return posicion + 1; //Actualizo la posicion
int i = 0;
while (cadena[i] && subcadena[i] && cadena[i]==subcadena[i])
i++; //Busco donde dejan de ser iguales, o una se termina
if (subcadena[i] == '\0')
return 0; //Lo subcadena se termino, entonces esta
else
return -1; //No esta
//return (subcadena[i]) ? -1 : 0 ; //Operador ternario en C
// <condicion> ? <si verdadero> : <si falso>
}
int main(){
int resultado = buscar_ultimo(CADENA,SUBCADENA);
printf("Esta en la posicion: %d\n",resultado);
return 0;
}
In [2]:
#include <stdio.h>
//Constantes en C
#define CADENA "Un tete a tete con tete"
#define SUBCADENA "te"
/*
* Funcion que busca la ultima aparicion de una sub-cadena dada en otra cadena.
* Devuelve la posicion donde comienza la sub-cadena, o -1 en caso de no encontrarla.
*/
int buscar_ultimo(char* cadena,char* subcadena); // Definicion del prototipo
int buscar_ultimo(char* cadena,char* subcadena){
if (!cadena[0]) //Caso cadena[0]=='\n'
return 0;
int posicion = buscar_ultimo(cadena+1,subcadena);
if (posicion > -1) //Caso ya se encontro, entonces no es el ultimo
return posicion + 1; //Actualizo la posicion
int i = 0;
while (cadena[i] && subcadena[i] && cadena[i]==subcadena[i])
i++; //Busco donde dejan de ser iguales, o una se termina
//if (subcadena[i] == '\0')
// return 0; //Lo subcadena se termino, entonces esta
//else
// return -1; //No esta
return (subcadena[i]) ? -1 : 0 ; //Operador ternario en C
// <condicion> ? <si verdadero> : <si falso>
}
int main(){
int resultado = buscar_ultimo(CADENA,SUBCADENA);
printf("Esta en la posicion: %d\n",resultado);
return 0;
}
In [37]:
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
int contadores[256] = {0};
int i = 0;
while (texto[i]){
contadores[ texto[i] ]++;
i++;
}
i = 0;
while (nota[i]){
contadores[ nota[i] ]--;
if (contadores[ nota[i] ] < 0)
return false;
i++;
}
return true;
}
int main(){
bool resultado = se_puede_escribir_nota(TEXTO,NOTA);
if (resultado)
printf("Se puede escribir la nota: '%s'\n",NOTA);
else
printf("No se puede escribir la nota: '%s'\n",NOTA);
return 0;
}
In [36]:
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
int contadores[256] = {0};
int i = 0;
while (texto[i]){
contadores[ texto[i++] ]++;
}
i = 0;
while (nota[i]){
contadores[ nota[i] ]--;
if (contadores[ nota[i++] ] < 0)
return false;
}
return true;
}
int main(){
bool resultado = se_puede_escribir_nota(TEXTO,NOTA2);
if (resultado)
printf("Se puede escribir la nota: '%s'\n",NOTA2);
else
printf("No se puede escribir la nota: '%s'\n",NOTA2);
return 0;
}
In [30]:
#include <stdio.h>
int main(){
int i = 0;
printf("%d \n",++i);
printf("%d \n",++i);
printf("%d \n",++i);
printf("%d \n",++i);
printf("%d \n",++i);
printf("%d \n",++i);
printf("%d \n",++i);
return 0;
}
In [31]:
#include <stdio.h>
int main(){
int i = 0;
printf("%d \n",i++);
printf("%d \n",i++);
printf("%d \n",i++);
printf("%d \n",i++);
printf("%d \n",i++);
printf("%d \n",i++);
printf("%d \n",i++);
return 0;
}
In [40]:
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
int contadores[256] = {0};
while ( *texto ){
contadores[ *texto++ ]++;
}
while ( *nota ){
contadores[ *nota ]--;
if (contadores[ *nota++ ] < 0)
return false;
}
return true;
}
int main(){
bool resultado = se_puede_escribir_nota(TEXTO,NOTA);
if (resultado)
printf("Se puede escribir la nota: '%s'\n",NOTA);
else
printf("No se puede escribir la nota: '%s'\n",NOTA);
resultado = se_puede_escribir_nota(TEXTO,NOTA2);
if (resultado)
printf("Se puede escribir la nota: '%s'\n",NOTA2);
else
printf("No se puede escribir la nota: '%s'\n",NOTA2);
return 0;
}